1. Field of the Invention
The present invention relates generally to data processing systems and more particularly to a computer implemented method for software and systems management in networked computer environments. Still more particularly, the present invention provides a computer implemented method, data processing system, and computer usable program code for providing policy-based changes to resources in a federated environment.
2. Description of the Related Art
Enterprises are increasingly moving towards a grid-based computing environment as they strive to contain information technology costs and streamline their businesses through outsourcing of non-core business processes and sharing of distributed resources. Grid is the ability, using a set of open standards and protocols, to gain access to applications and data, processing power, storage capacity, and a vast array of other computing resources over the Internet. A grid system is a type of parallel and distributed system that enables the sharing, selection, and aggregation of resources distributed across multiple administrative domains based on the resources availability, capacity, performance, cost, and users' quality-of-service requirements
The grid infrastructure is emerging to be a common platform for realizing such changes. The grid infrastructure provides middleware services for discovery, naming, messaging, monitoring, and resource brokering. Middleware is software that connects two otherwise separate applications allowing data to pass between the applications. Middleware functions as a communications layer that allows applications to interact across hardware and network environments.
While grid-based systems can facilitate resource sharing across multiple administrative domains, grid-based systems are much harder to manage from a system administration point of view. One reason for this is that the current state-of-the-art in system management technology has not kept pace with the advances in middleware. Most of the progress has been in managing single or cluster-based systems. Even for such systems, system administrators face a much higher level of complexity when they have to configure and deploy a new service on an existing infrastructure or manage the lifecycle of the existing service and software stack. The situation is much worse in a complex application environment, for example, an environment involving orchestration of a workflow formed by multiple business processes. In such cases, deployment and life cycle management solutions need to take an integrated view of the multiple tiers involved, and current system management technologies do not provide the necessary means to build such solutions.
A federated environment is a collection of component services and resources belonging to multiple administrative domains that cooperate and coordinate their activities so as to deliver a composite higher level service without violating policies corresponding to individual administrative domains. These federated systems are sometimes referred to as virtual organizations, collective services, on-demand clusters, agreement-based cooperating systems, and so on. A key characteristic of federated systems is that individual components are not dedicated to provide their services to the virtual organization for its entire lifetime, but their commitment to provide the service is limited to a well-defined period of time. Components are constituent elements that form the organization of a grid. For example, a component could be a physical box (hardware), an application server instance (software), or a firewall (network).
Often times, the individual components have the liberty to leave the virtual organization with or without prior notice. As a result, the composite federated system must always be prepared to deal with the changes in the service levels offered by individual components, as well as asynchronous availability and unavailability of the component services. Traditional system management controls that are designed for dedicated and static cluster-based systems are not geared towards handling such dynamic and continuously evolving systems.
During the lifetime of any service, there are times when the changes need to be made to the underlying resource infrastructure that provides the service. Changes may be made to either to hardware or software components. A change is an update, repair, or alteration to a resource. Hardware resource changes may include adding new hardware, upgrading, repairing, or removing old hardware. Software resource changes may include updating software components by applying software patches, removing old versions, or installing new versions of the software. Further, changes may also include configuration changes, such as changes in allocated heap size, to the underlying software components. Currently, performing these changes requires that the system administrator be aware of the relationships and dependencies between resources and high-level services. Keeping track of relationships and dependencies may sometimes be tedious or impossible when the resources belong to different administrative domains.